A flash memory, one of nonvolatile semiconductor memory devices, uses a transistor having a charge accumulation layer as a memory cell. This memory cell can nonvolatilely store different data in accordance with the amounts of charge accumulated in the charge accumulation layer.
Even though the flash memory can nonvolatilely store data, however, it discharges the accumulated charge gradually after left for long time. As a result, the threshold voltage of the memory cell is reduced.
There is a data write method of programming the threshold voltage of a memory cell slightly higher previously in expectation of the reduction in the threshold voltage due to long time leaving. In programming the threshold voltage of a memory cell slightly higher, however, the number of write loops until verify-pass increases naturally. As a result, the memory cell cannot finish programming and may cause a write error.